package eSchool.Client;

import eSchool.Server.ISchoolServer;
import eSchool.BL.Aluno;
import eSchool.BL.AlunoInscrito;
import eSchool.BL.Alunos;
import eSchool.BL.AlunosInscritos;
import eSchool.BL.CriteriosPesquisa;
import eSchool.BL.Disciplina;
import eSchool.BL.Disciplinas;
import eSchool.BL.Docente;
import eSchool.BL.Docentes;
import eSchool.BL.Funcionario;
import eSchool.BL.Funcionarios;
import eSchool.BL.EntidadeBase;
import eSchool.BL.DisciplinaInscrito;
import eSchool.BL.DisciplinasInscrito;
import eSchool.BL.Utilizador;
import eSchool.BL.Utilizadores;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;

public class SchoolClient extends UnicastRemoteObject{

     ISchoolServer eServer;
     String host = "localhost";

     public SchoolClient() throws Exception{
         eServer = getMsgServer();
     }
     
     private ISchoolServer getMsgServer() throws Exception{
        int porto = 1099;
        //UnicastRemoteObject.exportObject(this,0); //Tem que ser feito no porto 0;
        Registry ror = LocateRegistry.getRegistry(host, porto);        
        ISchoolServer server = (ISchoolServer)ror.lookup("eSchoolServer");
        return server;
    }
     
     public Utilizador logIn(String utilizador, String chave) throws RemoteException {
        return eServer.logIn(utilizador, chave);
    }

    public void logOut(String utilizador) throws RemoteException {
        eServer.logOut(utilizador);
    }

     public void logOut(EntidadeBase entidadeBase) throws RemoteException {
        eServer.logOut(entidadeBase);
    }

     public Aluno getAluno(String numAluno) throws RemoteException {
        return eServer.getAluno(numAluno);
    }
    
     public Alunos getAlunos(CriteriosPesquisa criterios) throws RemoteException {
        return eServer.getAlunos(criterios);
    }
 
     public Docente getDocente(int idDocente) throws RemoteException {
        return eServer.getDocente(idDocente);
    }

     public Docentes getDocentes(CriteriosPesquisa criterios) throws RemoteException {
        return eServer.getDocentes(criterios);
    }

     public Funcionario getFuncionario(int idFuncionario) throws RemoteException {
        return eServer.getFuncionario(idFuncionario);
    }

     public Funcionarios getFuncionarios(CriteriosPesquisa criterios) throws RemoteException {
        return eServer.getFuncionarios(criterios);
    }
    
    public Disciplina getDisciplina(String codDisciplina) throws RemoteException {
        return eServer.getDisciplina(codDisciplina);
    }

    public Disciplinas getDisciplinas(CriteriosPesquisa criterios) throws RemoteException {
        return eServer.getDisciplinas(criterios);
    }
    
    public AlunoInscrito getAlunoInscrito(String codAluno) throws RemoteException {
        return eServer.getAlunoInscrito(codAluno);
    }
    
    public AlunosInscritos getAlunosInscritos(CriteriosPesquisa criterios) throws RemoteException {
        return eServer.getAlunosInscritos(criterios);
    }

    public DisciplinaInscrito getDisciplinaInscrito(String codDisciplina, String codAluno) throws RemoteException {
        return eServer.getDisciplinaInscrito(codDisciplina, codAluno);
    }
    
    public DisciplinasInscrito getDisciplinasInscrito(CriteriosPesquisa criterios) throws RemoteException {
        return eServer.getDisciplinasInscrito(criterios);
    }
    
     public Utilizador getUtilizador(String codUtilizador) throws RemoteException {
        return eServer.getUtilizador(codUtilizador);
    }
    
     public Utilizadores getUtilizadores(CriteriosPesquisa criterios) throws RemoteException {
        return eServer.getUtilizadores(criterios);
    }
    
    public void gravaAluno(Aluno aluno) throws RemoteException {
        eServer.gravaAluno(aluno);
    }
    
    public void gravaDocente(Docente docente) throws RemoteException {
        eServer.gravaDocente(docente);
    }
    
    public void gravaFuncionario(Funcionario funcionario) throws RemoteException {
        eServer.gravaFuncionario(funcionario);
    }
    
    public void gravaDisciplina(Disciplina disciplina) throws RemoteException {
        eServer.gravaDisciplina(disciplina);
    }
    
    public void gravaUtilizador(Utilizador utilizador) throws RemoteException {
        eServer.gravaUtilizador(utilizador);
    }
    
     public void gravaAlunoInscrito(AlunoInscrito alunoInscrito) throws RemoteException {
        eServer.gravaAlunoInscrito(alunoInscrito);
    }
    

    
}
